package cn.swing.his.element.webapi.service;


import cn.swing.his.common.utils.QnyUtils;
import cn.swing.his.element.service.IElementService;
import cn.swing.his.element.webapi.mapper.ElementMapper;
import cn.swing.his.pojo.element.dto.CarouselDTO;
import cn.swing.his.pojo.element.dto.MenuBarDTO;
import cn.swing.his.pojo.element.vo.CarouselVO;
import cn.swing.his.pojo.element.vo.MenuBarVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.util.List;
import java.util.UUID;
@Slf4j
@Service
public class ElementServiceImpl implements IElementService {
    @Value("${qi-niu-yun.url}")
    private String url;

    String dirPath = null;
    @Autowired
    private ElementMapper mapper;

    @Autowired
    private QnyUtils qnyUtils;

    // 上传图片
    @Override
    public String uploadImage(MultipartFile file) {
        // 得到文件原始文件名
        String fileName = file.getOriginalFilename();
        log.info("原始文件名为：{}",fileName);
        // 得到后缀名 从最后一个.出现的位置截取到最后
        String suffix = fileName.substring(fileName.lastIndexOf("."));
        // 得到唯一文件名 UUID.randomUUID()得到一个唯一标识符
        fileName = UUID.randomUUID() + suffix;
        log.info("该图片的名字为：{}",fileName);
        boolean uploadSuccessfully = qnyUtils.upload(file,fileName);
        if (uploadSuccessfully){
            return "http://" + url + "/" + fileName;
        }
        return null;
    }

    @Override
    public List<CarouselVO> list() {
        return mapper.list();
    }
    //修改轮播图
    @Override
    public Integer updateCarousel(CarouselVO carousel) {
        return mapper.updateCarousel(carousel);
    }
    //删除轮播图
    @Override
    public Integer deleteCarousel(Integer id) {
        return mapper.deleteCarousel(id);
    }
    //添加轮播图
    @Override
    public Integer insertCarousel(CarouselDTO carousel) {
        return mapper.insertCarousel(carousel);
    }

    @Override
    public List<MenuBarVO> listMenuBar() {
        return mapper.listMenuBar();
    }
    //修改导航栏
    @Override
    public Integer updateMenuBar(MenuBarDTO menuBar) {
        return mapper.updateMenuBar(menuBar);
    }
    //删除导航栏
    @Override
    public Integer deleteMenuBar(Integer id) {
        return mapper.deleteMenuBar(id);
    }
    //添加导航栏
    @Override
    public Integer insertMenuBar(MenuBarDTO menuBarDTO) {
        return mapper.insertMenuBar(menuBarDTO);
    }
    //上传图片
//    @Override
//    public String uploadPictures(MultipartFile picFile) throws Exception {
//        //得到保存文章图片文件夹的相对路径
//        //getURL(File file)
//        //获得URL，常用于使用绝对路径时的情况
//        //file(String path)
//        //创建File对象，自动识别相对或绝对路径，相对路径将自动从ClassPath下寻找
//        String urlStr = URLUtil.getURL(FileUtil.file("articlePictures")).toString();
//        System.out.println("urlStr = " + urlStr);
//        //urlStr = file:/D:/his-management/his-article/his-article-webapi/target/classes/articlePictures
//        dirPath = urlStr.substring(urlStr.indexOf("his-management"), urlStr.indexOf("his-article"));
//        //dirPath = his-management/
//        System.out.println("dirPath = " + dirPath);
//        //prefix = D:/
//        String prefix = urlStr.substring(6, urlStr.indexOf("his-management"));
//        System.out.println("prefix = " + prefix);
//        dirPath += "articlePictures/";
//        dirPath = prefix + dirPath;
//        System.out.println("dirPath = " + dirPath);
//        //dirPath = D:/his-management/articlePictures/
//
//        //得到原始文件名
//        String fileName = picFile.getOriginalFilename();
//        System.out.println("fileName = " + fileName);
//        //得到后缀名 从最后一个.出现的位置截取到最后
//        String suffix = fileName.substring(fileName.lastIndexOf("."));
//        //得到唯一文件名 UUID.randomUUID()得到一个唯一标识符
//        fileName = UUID.randomUUID() + suffix;
//        System.out.println("fileName = " + fileName);
//        //准备保存图片的文件夹路径
//        File dirFile = new File(dirPath);
//        if (!dirFile.exists()) {
//            dirFile.mkdirs();
//        }
//        //得到文件的完整路径
//        String filePath = dirPath + "/" + fileName;
//        System.out.println("filePath = " + filePath);
//        //把文件保存到此路径
//        picFile.transferTo(new File(filePath));
//        return fileName;
//    }

    //删除上传的图片
    @Override
    public void removePicture(String pictureName) {
        String filePath = dirPath + "/" + pictureName;
        new File(filePath).delete();
    }
}
